(function(global) { //utiility functions /////// if (!Array.prototype.indexOf) { Array.prototype.indexOf = function(obj, start) { var i, j; i = start || 0; j = this.length; while (i < j) { if (this[i] === obj) { return i; } i++; } return -1; }; } //////// var parseQueryString = function(url) { var a = document.createElement('a'); a.href = url; str = a.search.replace(/\?/, ''); return deparam(str, true /* coerce values, eg. 'false' into false */); }; var each = function (arr, fnc) { var data = []; for (i = 0; i < arr.length; i++) data.push(fnc(arr[i])); return data; }; // deparam // // Inverse of $.param() // // Taken from jquery-bbq by Ben Alman // https://github.com/cowboy/jquery-bbq/blob/master/jquery.ba-bbq.js var isArray = Array.isArray || function(obj) { return Object.prototype.toString.call(obj) == '[object Array]'; }; var deparam = function( params, coerce ) { var obj = {}, coerce_types = { 'true': !0, 'false': !1, 'null': null }; // Iterate over all name=value pairs. each( params.replace( /\+/g, ' ' ).split( '&' ), function(v, j){ var param = v.split( '=' ), key = decodeURIComponent( param[0] ), val, cur = obj, i = 0, // If key is more complex than 'foo', like 'a[]' or 'a[b][c]', split it // into its component parts. keys = key.split( '][' ), keys_last = keys.length - 1; // If the first keys part contains [ and the last ends with ], then [] // are correctly balanced. if ( /\[/.test( keys[0] ) && /\]$/.test( keys[ keys_last ] ) ) { // Remove the trailing ] from the last keys part. keys[ keys_last ] = keys[ keys_last ].replace( /\]$/, '' ); // Split first keys part into two parts on the [ and add them back onto // the beginning of the keys array. keys = keys.shift().split('[').concat( keys ); keys_last = keys.length - 1; } else { // Basic 'foo' style key. keys_last = 0; } // Are we dealing with a name=value pair, or just a name? if ( param.length === 2 ) { val = decodeURIComponent( param[1] ); // Coerce values. if ( coerce ) { val = val && !isNaN(val) ? +val // number : val === 'undefined' ? undefined // undefined : coerce_types[val] !== undefined ? coerce_types[val] // true, false, null : val; // string } if ( keys_last ) { // Complex key, build deep object structure based on a few rules: // * The 'cur' pointer starts at the object top-level. // * [] = array push (n is set to array length), [n] = array if n is // numeric, otherwise object. // * If at the last keys part, set the value. // * For each keys part, if the current level is undefined create an // object or array based on the type of the next keys part. // * Move the 'cur' pointer to the next level. // * Rinse & repeat. for ( ; i <= keys_last; i++ ) { key = keys[i] === '' ? cur.length : keys[i]; cur = cur[key] = i < keys_last ? cur[key] || ( keys[i+1] && isNaN( keys[i+1] ) ? {} : [] ) : val; } } else { // Simple key, even simpler rules, since only scalars and shallow // arrays are allowed. if ( isArray( obj[key] ) ) { // val is already an array, so push on the next value. obj[key].push( val ); } else if ( obj[key] !== undefined ) { // val isn't an array, but since a second value has been specified, // convert val into an array. obj[key] = [ obj[key], val ]; } else { // val is a scalar. obj[key] = val; } } } else if ( key ) { // No value was defined, so set something meaningful. obj[key] = coerce ? undefined : ''; } }); return obj; }; var avcastUrl = '//www.siteminds.net/m/1.7/mind_rs_prd.php'; // Globals if(!global.avCast) { global.avCast = {}; }; var avCast = global.avCast; // To keep track of which embeds we have already processed if(!avCast.foundEls) avCast.foundEls = []; var foundEls = avCast.foundEls; if(!avCast.calledRS4Once) avCast.calledRS4Once = false; var calledRS4Once = avCast.calledRS4Once; if(!avCast.settings) avCast.settings = []; var settings = avCast.settings; var els = document.getElementsByTagName('script'); var re = /.*mind_loader\.([^/]+\.)?php/; for(var i = 0; i < els.length; i++) { var el = els[i]; if(el.src.match(re) && foundEls.indexOf(el) < 0) { foundEls.push(el); var parameters = parseQueryString(el.src); var d = document.createElement('div'); var container = document.createElement('div'); el.parentNode.insertBefore(container, el); parameters['container'] = container; //console.log('getting '+'blck_callback'+parameters['cast_id']); parameters['mm_cb'] = 'blck_callback'+parameters['cast_id']; settings.push(parameters); } } // Load main javascript if found some new ones during this script if (calledRS4Once==false) { global.avCast.calledRS4Once = true; //console.log('adding the embed script '); var s = document.createElement('script'); s.async = true; s.src = avcastUrl; document.body.appendChild(s); } }(this));